/*
题目描述
输入一个字符串，这个字符串包含了数字和非数字字符。例如：
a123x456  17960?   302tab5876
将其中连续的数字作为一个整数，依次存放到一个数组中，不妨将这个数组命名为a。
对于以上的示例字符串，123存放在a[0]中，456放在a[1]中，余此类推。统计共有多少个整数，并依次输出这些整数。

输入
只有一行，符合题目描述的一个字符串。输入保证没有整数包含前导0，且整个字符串中每一组连续的数字数量不超过5个，加号（+）和减号（-）不表示整数的正负号。
字符串的长度不超过500。

输出
第一行输出共有多少个整数，第二行依次输出这些整数，在每个整数后输出一个空格。
请注意行尾输出换行。
*/
#include <stdio.h>
#include <string.h>
int strNumToNum(char strNum[501])
{
    int num = 0;
    for (int i = 0; strNum[i] != '\0'; i++)
    {
        int pow = 1;
        for (int j = 0; j < strlen(strNum) - 1 - i; j++)
        {
            pow *= 10;
        }
        num += (strNum[i] - '0') * pow;
    }
    return num;
}

int main()
{
    char str[501];
    int nums[250];
    int count = 0;
    fgets(str, 501, stdin);
    int len = strlen(str);
    if (len >= 0 && str[len - 1] == '\n')
    {
        str[len - 1] = '\0';
    }
    for (int i = 0; str[i] != '\0'; i++)
    {
        if (str[i] >= '0' && str[i] <= '9')
        {
            count++;
            char strNum[501];
            int j;
            for (j = 0; str[i + j] >= '0' && str[i + j] <= '9'; j++)
            {
                strNum[j] = str[i + j];
            }
            strNum[j] = '\0';
            nums[count-1] = strNumToNum(strNum);
            i += j;
        }
    }
    printf("%d\n",count);
    for (int i = 0; i < count; i++)
    {
        printf("%d ",nums[i]);
    }
}